From: Camila Ayres Date: Thu, 19 Dec 2024 14:07:13 +0000 (+0100) Subject: Detect if it is running in a Vmware or being access via RDP to disable graphic accele... X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~2^2~65^2~1 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success/%22http:/www.example.com/cgi/success?a=commitdiff_plain;h=5275a91907b413d5aa835693666deb52cc6e7ac3;p=nextcloud-desktop.git Detect if it is running in a Vmware or being access via RDP to disable graphic acceleration. There has been reports of the client crashing in a VMware or being accessed via RDP starting with 3.15.0 due to the client's use of graphic acceleration. Signed-off-by: Camila Ayres --- diff --git a/src/gui/application.cpp b/src/gui/application.cpp index 080ad34e6..2ac79a20e 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -232,6 +232,24 @@ Application::Application(int &argc, char **argv) // Ensure OpenSSL config file is only loaded from app directory QString opensslConf = QCoreApplication::applicationDirPath() + QStringLiteral("/openssl.cnf"); qputenv("OPENSSL_CONF", opensslConf.toLocal8Bit()); + + const auto shouldDisableGraphicsAcceleration = [&]() { + const auto systemEnvironment = QProcessEnvironment::systemEnvironment(); + if (systemEnvironment.contains(QStringLiteral("VMWARE"))) { + return true; + } + + if (systemEnvironment.contains("SESSIONNAME") && systemEnvironment.value("SESSIONNAME").startsWith("RDP-")) { + return true; + } + + return false; + }; + + if (shouldDisableGraphicsAcceleration()) { + QProcessEnvironment::systemEnvironment().insert(QStringLiteral("SVGA_ALLOW_LLVMPIPE"), 0); + qCInfo(lcApplication) << "Disabling graphics acceleration, application might be running in a virtual or in a remote desktop."; + } #endif // TODO: Can't set this without breaking current config paths